DevOps 的目標(biāo)是提高軟件開發(fā)的速度和質(zhì)量。傳統(tǒng)團(tuán)隊(duì)必須發(fā)展以實(shí)現(xiàn)更快的部署,而采用虛擬化是 DevOps 過渡的主要部分。虛擬化為團(tuán)隊(duì)提供了充分利用現(xiàn)代開發(fā)所需的一致性和敏捷性。本文解釋了 DevOps 中虛擬化的價(jià)值。繼續(xù)閱讀以了解虛擬化如何使工程師能夠在整個(gè) 軟件開發(fā)生命周期 (SDLC) 中設(shè)置靈活且一致的系統(tǒng)。
什么是虛擬化?
虛擬化是在單個(gè)服務(wù)器上創(chuàng)建多個(gè)虛擬系統(tǒng)的過程。這種做法通過在多個(gè)用戶和環(huán)境之間分配其資源來最大化物理機(jī)器的容量。
DevOps 團(tuán)隊(duì)使用虛擬化來創(chuàng)建虛擬機(jī)(VM),模擬硬件和軟件配置。每個(gè)VM都有一個(gè)操作系統(tǒng)并充當(dāng)獨(dú)立的計(jì)算機(jī),即使它運(yùn)行在物理設(shè)備的一部分上。虛擬機(jī)模仿計(jì)算機(jī)的所有組件,包括:
- 中央處理器。
- 內(nèi)存。
- 貯存。
- 網(wǎng)絡(luò)。
借助虛擬化,一塊硬件可以同時(shí)托管大量 VM 配置,而不會(huì)出現(xiàn)性能問題。虛擬化的主要好處是:
- 以更少的資源獲得更多的計(jì)算能力。
- 在單個(gè)硬件上運(yùn)行多個(gè)獨(dú)立系統(tǒng)。
- 貫穿 持續(xù)集成和持續(xù)交付 (CI/CD) 流程的一致環(huán)境。
DevOps 團(tuán)隊(duì)使用管理程序來管理虛擬機(jī)。管理程序或虛擬機(jī)監(jiān)視器(VMM)是創(chuàng)建和運(yùn)行VM的軟件、固件或硬件。最受歡迎的 VMM 是:
- 虛擬機(jī) (ESXi)。
- AWS XEN。
- 微軟 Hyper V。
- 螞蟻操作系統(tǒng)。
- 甲骨文虛擬機(jī)服務(wù)器。
- 電源管理程序。
管理程序運(yùn)行在物理專用服務(wù)器或操作系統(tǒng)之上,以模擬底層硬件。虛擬化依賴于云計(jì)算來確保始終保持最佳性能。云允許虛擬機(jī)在幾分鐘內(nèi)按需擴(kuò)展或縮減以滿足資源需求。
不同類型的虛擬化
有四種主要類型的虛擬化:
- 服務(wù)器虛擬化。
- 網(wǎng)絡(luò)虛擬化。
- 桌面虛擬化。
- 操作系統(tǒng)虛擬化。
服務(wù)器虛擬化
服務(wù)器虛擬化使單個(gè)物理服務(wù)器能夠執(zhí)行多個(gè)獨(dú)立的功能。這種形式的虛擬化導(dǎo)致:
- 降低運(yùn)營成本。
- 提高服務(wù)器性能。
- 更快的工作負(fù)載能力。
服務(wù)器虛擬化還降低了管理成本和物理服務(wù)器的復(fù)雜性。
網(wǎng)絡(luò)虛擬化
網(wǎng)絡(luò)虛擬化模擬虛擬環(huán)境中的網(wǎng)絡(luò)。此虛擬化過程在虛擬環(huán)境之間分配網(wǎng)絡(luò)功能(目錄服務(wù)、文件共享、IP 配置)。網(wǎng)絡(luò)虛擬化減少了設(shè)置多個(gè)獨(dú)立網(wǎng)絡(luò)所需的物理組件數(shù)量,例如:
- 開關(guān)。
- 路由器。
- 服務(wù)器。
- 電纜。
- 集線器。
虛擬網(wǎng)絡(luò)還提供比物理網(wǎng)絡(luò)更好的運(yùn)營能力,而且成本更低。
桌面虛擬化
桌面虛擬化創(chuàng)建了一個(gè)模擬桌面設(shè)備設(shè)置和應(yīng)用程序的虛擬環(huán)境。這種虛擬化形式允許管理員(個(gè)人或工具)將桌面環(huán)境部署到多臺(tái)物理機(jī)。管理員可以同時(shí)對所有虛擬桌面執(zhí)行批量配置、更新和安全檢查。虛擬桌面基礎(chǔ)架構(gòu) 非常適合提供可從任何設(shè)備訪問的安全、集中的工作環(huán)境。
操作系統(tǒng)虛擬化
操作系統(tǒng)虛擬化允許開發(fā)人員在單臺(tái)機(jī)器上部署多個(gè)操作系統(tǒng)。這種虛擬化類型可以幫助團(tuán)隊(duì):
- 降低批量硬件成本。
- 在一臺(tái)機(jī)器上測試多個(gè)操作系統(tǒng)中的應(yīng)用程序。
- 由于虛擬實(shí)例的隔離(例如,測試未經(jīng)批準(zhǔn)的軟件解決方案)而提高了安全性。
- 加速 IT 服務(wù)。
當(dāng)團(tuán)隊(duì)需要在單個(gè)設(shè)備上運(yùn)行 Linux 和 Windows 環(huán)境時(shí),操作系統(tǒng)虛擬化是一種流行的選擇。
什么是 DevOps?
DevOps 是一組實(shí)踐、理念和工具,使團(tuán)隊(duì)能夠高速發(fā)布軟件。DevOps 有兩個(gè)主要目標(biāo):
- 打破開發(fā)和運(yùn)營團(tuán)隊(duì)之間的障礙和孤島。
- 自動(dòng)化構(gòu)建、測試和交付流程,使軟件創(chuàng)建更快、更可靠。
DevOps 優(yōu)化了從開發(fā)和測試到部署和運(yùn)營的整個(gè)應(yīng)用程序生命周期。向 DevOps 過渡對于縮短上市時(shí)間和提高競爭力至關(guān)重要。DevOps 的顯著優(yōu)勢包括:
- 速度: 團(tuán)隊(duì)以高速創(chuàng)建軟件,可以更快地適應(yīng)市場需求。增加發(fā)布頻率和速度可以更快地改進(jìn)產(chǎn)品。
- 可靠性: 應(yīng)用程序更新和基礎(chǔ)架構(gòu)更改不會(huì)影響用戶體驗(yàn)。 持續(xù)測試 確保每個(gè)代碼添加的功能。
- 可擴(kuò)展性: 工程師大規(guī)模管理基礎(chǔ)設(shè)施和開發(fā)流程。例如,團(tuán)隊(duì)使用 基礎(chǔ)架構(gòu)即代碼 (IaC) 來管理開發(fā)、測試和生產(chǎn)環(huán)境。
- 協(xié)作: 開發(fā)人員和運(yùn)營人員將工作流程結(jié)合起來,以減少效率低下并節(jié)省時(shí)間。
- 安全性: 自動(dòng)化合規(guī)策略和高控制級別使 DevOps 團(tuán)隊(duì)能夠確保整個(gè) SDLC 的安全性。
虛擬化如何幫助 DevOps?
虛擬化是 DevOps 軟件堆棧的重要組成部分。虛擬機(jī)允許團(tuán)隊(duì)在模擬環(huán)境中構(gòu)建、測試和部署代碼,而不會(huì)浪費(fèi)計(jì)算資源。虛擬化的好處包括:
- 在開發(fā)過程中提高敏捷性、靈活性和可擴(kuò)展性。
- 整個(gè) SDLC 的成本節(jié)約,主要是在維護(hù)和測試方面。
- 更快的工作負(fù)載和環(huán)境設(shè)置使團(tuán)隊(duì)更有效率。
DevOps 中的虛擬化對于復(fù)雜云、API 和 SOA 系統(tǒng)的開發(fā)至關(guān)重要。對于喜歡在 API 層開始尋找 bug 的測試驅(qū)動(dòng)開發(fā) (TDD) 團(tuán)隊(duì)來說,VM 是理想的選擇。
DevOps 團(tuán)隊(duì)經(jīng)常使用虛擬化和容器化來增加軟件創(chuàng)建的靈活性。 容器化工具 允許工程師在單個(gè)容器中運(yùn)行多個(gè)應(yīng)用程序,該環(huán)境包含應(yīng)用程序運(yùn)行所需的一切:
- 代碼。
- 系統(tǒng)工具。
- 圖書館。
VM 和容器的使用支持復(fù)雜的應(yīng)用程序基礎(chǔ)架構(gòu)。例如,平臺(tái)的前端和中間件組件可能在容器中運(yùn)行,而后端組件在 VM 上運(yùn)行。
DevOps 和虛擬化:好處
虛擬化為整個(gè) DevOps 管道帶來了好處, 并改進(jìn)了 CI/CD 的大部分方面。
更快更好的實(shí)時(shí)測試
通過模擬生產(chǎn)環(huán)境中存在的組件,虛擬化允許集成測試在開發(fā)過程的早期運(yùn)行。錯(cuò)誤發(fā)現(xiàn)在 SDLC 中發(fā)生得更快,從而消除了延遲生產(chǎn)和上市時(shí)間的瓶頸。虛擬化還允許在實(shí)時(shí)測試的同時(shí)進(jìn)行開發(fā)。實(shí)時(shí)測試導(dǎo)致:
- 高精度。
- 減少部署時(shí)間。
- 提高產(chǎn)品穩(wěn)定性。
團(tuán)隊(duì)可以自信地實(shí)時(shí)檢查每個(gè)新更改的效果,并在生命周期的早期發(fā)現(xiàn)生產(chǎn)缺陷。使用虛擬機(jī)進(jìn)行測試還可以減少重新測試和重建生產(chǎn)的時(shí)間。
快速服務(wù)器配置
物理服務(wù)需要時(shí)間來建立。操作員必須組裝服務(wù)器、將其安裝在機(jī)架上、設(shè)置好并將其投入運(yùn)行。使用虛擬化,管理員需要做的就是組裝虛擬機(jī)并將其傳輸?shù)侥繕?biāo)系統(tǒng)。如有必要,此過程可以是自動(dòng)的。
更快、更輕松的備份系統(tǒng)
對于大多數(shù)公司而言,完整性或服務(wù)器數(shù)據(jù)的丟失通常會(huì)導(dǎo)致數(shù)據(jù)丟失。然而,通過虛擬化,團(tuán)隊(duì)可以設(shè)置 每分鐘發(fā)生的自動(dòng)數(shù)據(jù)備份。虛擬化具有 快照、虛擬計(jì)算機(jī)系統(tǒng)的完整映像,開發(fā)人員可以在任何硬件上可靠地恢復(fù)。
更高效的團(tuán)隊(duì)
每當(dāng)團(tuán)隊(duì)需要額外的資源或環(huán)境時(shí),工程師可以在幾分鐘內(nèi)部署虛擬機(jī)。虛擬實(shí)例還具有靈活性和可擴(kuò)展性,因此團(tuán)隊(duì)可以事半功倍,而決策者可以依靠高效的 IT 規(guī)劃。虛擬化提供商使 VM 硬件和軟件保持最新。無需本地更新或管理,這使 DevOps 團(tuán)隊(duì)可以專注于 CI/CD 的其他領(lǐng)域。專家估計(jì),一個(gè)團(tuán)隊(duì)通過虛擬化可以節(jié)省 50% 到 60% 的總生產(chǎn)力。DevOps 團(tuán)隊(duì)可以輕松共享和使用虛擬資產(chǎn),從而實(shí)現(xiàn)更高效的并行開發(fā)。
降低成本
虛擬化在整個(gè) DevOps 管道中節(jié)省了資金,因?yàn)椋?/p>
- 測試變得更便宜。
- 團(tuán)隊(duì)不再依賴環(huán)境共享。
- 虛擬機(jī)比本地硬件需要更少的能源,從而降低了能源利用率。
- 減少對物理硬件的依賴會(huì)降低維護(hù)成本。
跨版本的環(huán)境標(biāo)準(zhǔn)化還降低了維護(hù)自定義配置的成本。
環(huán)境一致性
在虛擬機(jī)上工作比在裸機(jī)上編程更容易預(yù)測,尤其是在規(guī)模上。由于以下原因,物理硬件通常會(huì)表現(xiàn)出細(xì)微的差異:
- 制造工藝。
- 替換組件。
- 固件差異。
- 間歇性故障。
對于 VM,系統(tǒng)的配置、設(shè)備功能和內(nèi)存狀態(tài)都是一致的。團(tuán)隊(duì)在開發(fā)和生產(chǎn)中使用相同的虛擬化,從而降低了由于代碼管道轉(zhuǎn)換而導(dǎo)致配置錯(cuò)誤的可能性。此外,該軟件具有較少的潛在缺陷(即使它們發(fā)生也更具重現(xiàn)性)。
降低故障率
虛擬化降低了簽入和發(fā)布失敗率。DevOps 團(tuán)隊(duì)經(jīng)常設(shè)計(jì)自動(dòng)化測試來模擬軟件的實(shí)際使用。每當(dāng)工程師提交代碼以供簽入時(shí),這些測試都會(huì)自動(dòng)運(yùn)行,因此錯(cuò)誤很少會(huì)出現(xiàn)在發(fā)布中。大規(guī)模虛擬化還允許團(tuán)隊(duì)在不同版本和補(bǔ)丁級別上同時(shí)進(jìn)行測試。這些設(shè)置提高了產(chǎn)品兼容性和互操作性。當(dāng)團(tuán)隊(duì)必須針對依賴的第三方組件進(jìn)行重復(fù)測試時(shí),依賴虛擬化是有益的。通過虛擬化 ERP 或支付網(wǎng)關(guān),測試說明了現(xiàn)實(shí)世界依賴者的所有模擬數(shù)據(jù)和軟件響應(yīng)。
提高安全性
虛擬化提供了容錯(cuò)、一致和可預(yù)測的環(huán)境,可改進(jìn)配置控制、安全保證和網(wǎng)絡(luò)安全。虛擬機(jī)是高風(fēng)險(xiǎn)任務(wù)的理想選擇。有風(fēng)險(xiǎn)的進(jìn)程在隔離的虛擬容器中運(yùn)行,遠(yuǎn)離其他進(jìn)程和數(shù)據(jù),從而限制了潛在的爆炸半徑。團(tuán)隊(duì)還可以設(shè)置 VLAN 以虛擬分離操作。這種形式的 網(wǎng)絡(luò)分段 提高了安全性,因?yàn)槿肭终邿o法在受感染的系統(tǒng)中自由移動(dòng)。
DevOps 和虛擬化:挑戰(zhàn)
盡管提供了許多好處,但 DevOps 中的虛擬化仍然存在一些問題。雖然虛擬機(jī)加快了開發(fā)和測試時(shí)間,但設(shè)置和使用這些機(jī)器仍然需要時(shí)間。此外,一些團(tuán)隊(duì)由于遠(yuǎn)程訪問和虛擬化應(yīng)用程序而經(jīng)歷過數(shù)據(jù)泄露。如果設(shè)置不正確,這些功能可能會(huì)增加攻擊面。然而,DevOps 中虛擬化的最大障礙是知識(shí)鴻溝。為了有效地采用虛擬機(jī),公司必須要么雇傭新員工,要么投資于廣泛的培訓(xùn)。這兩種選擇都很昂貴,尤其是對于大型 DevOps 項(xiàng)目。